//===========================================================================
//文件名称：common.h
//功能概要：公共要素头文件
//芯片类型：STC89C52
//版权所有：HCIT-SMh
//版本更新：2020-02-21  V1.0
//===========================================================================
#ifndef	__COMMON_H       //防止重复定义（开头)
#define __COMMON_H

//1.包含芯片寄存器头文件
#include "reg52.h"           //包含芯片头文件
#include "intrins.h"

//2.定义开关总中断
#define ENABLE_INTERRUPTS   (EA = 1)  //开总中断
#define DISABLE_INTERRUPTS  (EA = 0)  //关总中断

//3.位操作宏函数（置位、清位、获得、取反寄存器一位的状态）
#define BSET(R,bit_No)  ((R)|= (1<<(bit_No)))    //置寄存器的一位
#define BCLR(R,bit_No)  ((R) &= ~(1<<(bit_No)))  //清寄存器的一位
#define BGET(R,bit_No)  (((R) >> (bit_No)) & 1)  //获得寄存器一位的状态
#define BRVS(R,bit_No)  ((R) ^= (1<<(bit_No)))   //将寄存器一位取反

//4．重定义基本数据类型（类型别名宏定义）
typedef unsigned char      uint_8;   //无符号8位数，字节
typedef unsigned short int uint_16;  //无符号16位数，字
typedef unsigned long int  uint_32;  //无符号32位数，长字
typedef char               int_8;    //有符号8位数
typedef short int          int_16;   //有符号16位数
typedef long  int          int_32;   //有符号32位数
// 不优化类型
typedef volatile uint_8    vuint_8;  //不优化无符号8位数，字节
typedef volatile uint_16   vuint_16; //不优化无符号16位数，字
typedef volatile uint_32   vuint_32; //不优化无符号32位数，长字
typedef volatile int_8     vint_8;   //不优化有符号8位数
typedef volatile int_16    vint_16;  //不优化有符号16位数
typedef volatile int_32    vint_32;  //不优化有符号32位数

//5.定义系统使用的时钟频率（用户可根据使用晶振的实际频率进行修改）
//#define    CLK_KHZ       12000        //时钟频率(KHz)
#define    CLK_KHZ         11059.2      //时钟频率(KHz)
//6.对外接口函数声明
//=======================================================================
//函数名称：delay_2us
//函数功能：延时2us函数，可实现延时7us到518us(MCU晶振频率12MHz)
//函数参数：t_2us: 延时2us的计数
//函数返回：无
//=======================================================================
void delay_2us(uint_8 t_2us); 

//=======================================================================
//函数名称：delay_50us
//函数功能：延时50us函数，可实现延时63us到50ms(MCU晶振频率12MHz)
//函数参数：t_50us: 延时50us的计数
//函数返回：无
//=======================================================================
void delay_50us(uint_16 t_50us);

//=======================================================================
//函数名称：delay_50ms
//函数功能：延时50ms函数，可实现延时50ms到50s(MCU晶振频率12MHz)
//函数参数：t_50ms: 延时50ms的计数
//函数返回：无
//=======================================================================
void delay_50ms(uint_16 t_50ms);

//======================================================================
//函数名称：SecAdd1
//函数功能：秒单元+1，并处理时分单元（00:00:00-23:59:59)
//函数参数：*p: 指向一个时分秒数组p[3]首地址
//函数返回：无
//=======================================================================
void SecAdd1(uint_8 *p);

#endif //防止重复定义（结尾)
